package com.zhentao.controller;

import com.zhentao.model.common.dtos.ResponseResult;
import com.zhentao.model.realname.dto.RealnameDto;
import com.zhentao.model.user.pojo.ApUserInfo;
import com.zhentao.model.user.vo.UserInfoVo;
import com.zhentao.service.ApUserInfoService;
import freemarker.template.TemplateException;
import io.minio.errors.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

@RestController
@RequestMapping("/api/v1/app/user")
@Api(tags = "UserInfoController-用户详情信息管理")
public class UserInfoController {
    @Resource
    ApUserInfoService apUserInfoService;
    /**
     * 用户详细信息列表
     * @param dto
     * @return
     */
    @ApiOperation("用户详细信息列表")
    @PostMapping("infoList")
    public ResponseResult infoList(@RequestBody RealnameDto dto){
      return  apUserInfoService.infoList(dto);
    }
    /**
     * 审核通过的用户详细资料列表
     * @return
     */
    @ApiOperation("审核通过的用户详细资料列表")
    @PostMapping("/infoUpList")
    public ResponseResult infoUpList(){
        return apUserInfoService.infoUpList();
    }

    @ApiOperation("app条件查询审核通过的用户详细资料列表")
    @PostMapping("/appInfoUpList")
    public ResponseResult appInfoUpList(@RequestBody UserInfoVo userInfo){
        return apUserInfoService.appInfoUpList(userInfo);
    }
    /**
     * 未审核的用户详细资料列表
     * @return
     */
    @ApiOperation("未审核的用户详细资料列表")
    @PostMapping("/infoNoPassList")
    public ResponseResult infoNoPassList(){
        return apUserInfoService.infoNoPassList();
    }
    /**
     * 审核不通过的用户详细资料列表
     * @return
     */
    @ApiOperation("审核不通过的用户详细资料列表")
    @PostMapping("/infoNotUpList")
    public ResponseResult infoNotUpList(){
        return apUserInfoService.infoNotUpList();
    }
    /**
     * 用户个人信息上传（添加）
     * @param apUserInfo
     * @return
     */
//    @ApiOperation("用户详细信息上传（添加）")
//    @PostMapping("/addUserInfo")
//    public ResponseResult addUserInfo(@RequestBody ApUserInfo apUserInfo) throws ServerException, TemplateException, InvalidBucketNameException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
//        return apUserInfoService.addUserInfo(apUserInfo);
//    }

    /**
     * 用户个人信息更新（修改）
     * @param apUserInfo
     * @return
     */
    @ApiOperation("用户详细信息更新（修改）")
    @PostMapping("/updateUserInfo")
    public ResponseResult updateUserInfo(@RequestBody ApUserInfo apUserInfo) throws ServerException, TemplateException, InvalidBucketNameException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        return apUserInfoService.updateUserInfo(apUserInfo);
    }

    /**
     * 后台审核用户详细信息 （通过）
     * @param id
     * @return
     */
    @ApiOperation("（通过）后台审核用户详细信息")
    @GetMapping("/checkPass")
    public ResponseResult checkPass(@Param("id") Integer id){
        return apUserInfoService.checkPass(id);
    }
    /**
     * 后台审核用户详细信息 （通过）
     * @param dto
     * @return
     */
    @ApiOperation("（未通过）后台审核用户详细信息")
    @PostMapping("/checkNotPass")
    public ResponseResult checkStatus(@RequestBody RealnameDto dto){
        return apUserInfoService.checkNotPass(dto);
    }
    @ApiOperation("根据userid查询用户详细信息")
    @GetMapping("/getByUserId/{userId}")
    public ResponseResult getByUserId(@PathVariable("userId") String userId){
        return apUserInfoService.getByUserId(userId);
    }

    @ApiOperation("根据id查询用户详细信息")
    @GetMapping("/getById/{id}")
    public ResponseResult getById(@PathVariable("id") String id){
        return ResponseResult.okResult(apUserInfoService.getById(id));
    }
    @ApiOperation("根据userid审核失败原因")
    @GetMapping("/getFeedback/{userId}")
    public ResponseResult getFeedback(@PathVariable("userId") String userId){
        return apUserInfoService.getFeedback(userId);
    }



}
